const items = [
    { name: "iPhone", price: 4000 },
    { name: "iPad", price: 3000 },
    { name: "AirPods", price: 1000 },
    { name: "Apple Watch", price: 3500 }
]
console.info('items:',items)

//filter() 方法创建一个新数组, 其包含通过所提供函数实现的测试的所有元素。 
//获取价格不高于 3000的item
const filterItems = items.filter(item => item.price <= 3000)
console.info('filter:',filterItems)

// map() 方法创建一个新数组，其结果是该数组中的每个元素是调用一次提供的函数后的返回值。
// 如获取上面对象的name
const itemKeys = items.map(item => item.name )
console.info('map:',itemKeys)

//遍历
//forEach
items.forEach( (item,index,array) => {
    console.log("forEach:",index, item.price)
    //console.log(array)
});

// find() 方法返回数组中满足提供的测试函数的第一个元素的值。否则返回 undefined。

const expensiveItem = items.find(item => item.price >= 3000)
console.log('find:', expensiveItem)

//some() 所有元素只要有一个满足条件便返回真，否则false
console.log("some:", items.some(item => item.price > 1000))
console.log("some:", items.some(item => item.price > 13500))

//every() 所有元素都要满足方可返回真
console.log("every:", items.every(item => item.price > 100))
console.log("every:", items.every(item => item.price > 3000))

//reduce() 
//从左到右为每个数组元素执行一次回调函数，并把上次回调函数的返回值放在一个暂存器中传给下次回调函数，并返回最后一次回调函数的返回值
const items2 =[1,2,3]
console.log('item2:',items2)
const totalPrice = items2.reduce(
    (total, currentItem) => total + currentItem,
    0    
)
console.log('reduce:',totalPrice)

//includes() 方法用来判断一个数组是否包含一个指定的值，根据情况，如果包含则返回 true，否则返回false。

console.log('includes: ',items2.includes(3))
console.log('includes: ',items2.includes(4))

// indexOf()方法返回在数组中可以找到一个给定元素的第一个索引，如果不存在，则返回-1。

console.log('indexOf: ', items2.indexOf(2))



//https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array

